In a typical multi-media system, a conventional personal computer is augmented with a full-motion video card to display full-motion video in a window on its display screen along with still images, such as text, outside the video window. Such a system offers enormous potential for educational applications and other interactive applications.
A memory buffer used to buffer the full-motion video information must be large enough and have a sufficiently large bandwidth or throughput to temporarily store and then output the vast amounts of ever changing video information without allowing the pixel data to overflow. If the bandwidth of the video buffer is not adequate, pixel information will be permanently lost and the loss of pixel information will appear as perceptible glitches on the display screen. Accordingly, it is vital that these video buffers be large enough and fast enough to not be overdriven by the incoming video information or outgoing video information requirements.
One type of video buffer which has been used is a video RAM (VRAM), which is typically a dual-port device having one port used for writing video data into the memory and a separate port for serially outputting video data from the memory to the display portion of a computer.
A much less expensive RAM which may be used for a video buffer is a dynamic RAM (DRAM), which is a single port device whose single port must be used for both inputting video data and outputting video data. Accordingly, the bandwidth and cost of the DRAM is less than that of a VRAM.
To reduce the cost of any full-motion video card for use with a conventional personal computer to achieve a multi-media capability, it would be desirable to use the less expensive DRAM, and especially the smallest size DRAM which can be used and still provide a quality video image.
FIG. 1 generally illustrates a conventional personal computer display portion 10 on the right side of FIG. 1 and the pertinent components of a full-motion video card 12 on the left side of FIG. 1. This video card 12 is typically an add-on card which is inserted into the motherboard of the personal computer for augmenting its video processing capabilities.
The personal computer includes a raster-scan type display monitor 14 which may have on the order of 800.times.600 pixels or more. A conventional VGA frame buffer 16 is generally bit-mapped to the display monitor 14 so that the storage locations in the frame buffer 16 have a one-to-one correspondence with the pixels in the display monitor 14.
The motion video card 12 receives analog or digital motion video information from a VCR, laser disk, CD ROM, television, or any other video source. This information is then converted into the proper digital format and applied to a vertical and horizontal scaler 20. The vertical and horizontal scaler 20 is controlled by signals on a control line 22 to reduce (if desired) the effective size (width.times.height) of the incoming video image so that the motion video image can be displayed in a small window 23 on the display monitor 14. The original image (e.g., 640.times.480 pixels) is scaled down by dropping lines of pixels to reduce the vertical height and by dropping pixels along a horizontal line to reduce the horizontal width of the video image. For example, if the original video image were to be scaled down 50% alternate lines of the video image would be deleted and alternate pixels would be deleted, thus reducing both the vertical and horizontal size by one half. Such horizontal scaling by 50% effectively reduces the peak bandwidth of the video signal by about half since every other video pixel is dropped.
This scaled video data is then temporarily stored in a motion video memory buffer 24, which may be a VRAM or DRAM.
The video data from the frame buffer 16 and the full-motion video data from the memory buffer 24 are then multiplexed by multiplexer 26 so that the full-motion video data is inserted at the proper time into the video data stream for display by the display monitor 14. Providing a horizontal and vertical expander capability may be used at the output of the memory buffer 24 to increase the pixel size of the video image beyond the pixel size of the original image.
This resulting multiplexed video data stream is converted to analog by the D/A converter 28 and then applied to the display monitor 14 to display a full-motion video window 23 along with other data on the display monitor 14. Since the incoming video image was scaled down by half in each dimension, to 320.times.240 pixels, a full-motion video window 23 of 320.times.240 pixels is now present on the display monitor 14.
To ensure the video buffer 24 has sufficient bandwidth to accurately process the video data, the video buffer 24 is made large enough and fast enough to support the maximum size (worst case) video window 23 available for selection by the user. Further, since multi-media software applications programs have varying requirements for the display of data, the size and bandwidth of the buffer 24 must be selected to satisfy the most demanding needs of these application programs.
What is needed is a more flexible data processing technique which is suitable for video data and allows a user (or application program) to select any scaling factor for any size full-motion video window without concern that the bandwidth of the full-motion video buffer will be exceeded. It is desirable that such a technique enable the use of an inexpensive and relatively small size DRAM.